﻿using OT.HikiSecureCenterApis.Service.OneCard.Req;

namespace OT.HikiSecureCenterApis.Service.OneCard.Res
{
    public class ResAuthDownloadTaskProgress
    {
        /// <summary>
        /// 标签,用于区分不同业务组件，建议使用组件标识。只支持1-32个数字和小写字母。
        /// </summary>
        public string tagId { get; set; }
        /// <summary>
        /// 下载任务唯一标识
        /// </summary>
        public string taskId { get; set; }
        /// <summary>
        /// 下载任务类型 ,参考附录A.53 任务下载类型说明
        /// https://open.hikvision.com/docs/0f6e8e1e41a14304aeecd287530b9c95?curNodeId=0f6e8e1e41a14304aeecd287530b9c95#c4c7357d
        /// </summary>
        public int taskType { get; set; }
        /// <summary>
        /// 任务操作类型 0:初始化下载, 1:异动下载, 2:指定下载-普通任务, 3:指定下载-快速任务, 4:自动下载, 5:同步下载
        /// </summary>
        public int taskOptType { get; set; }
        /// <summary>
        /// 下载开始时间 采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string startTime { get; set; }
        /// <summary>
        /// 下载总进度
        /// </summary>
        public int totalPercent { get; set; }
        /// <summary>
        /// 下载剩余时间
        /// </summary>
        public int leftTime { get; set; }
        /// <summary>
        /// 下载总用时
        /// </summary>
        public int consumeTime { get; set; }
        /// <summary>
        /// 下载是否结束
        /// </summary>
        public bool isDownloadFinished { get; set; }
        /// <summary>
        /// 资源下载详情
        /// </summary>
        public IList<ResourceDownloadProgress> resourceDownloadProgress { get; set; }
    }
    public class ResourceDownloadProgress
    {
        /// <summary>
        /// 资源对象
        /// </summary>
        public ResourceInfo resourceInfo { get; set; }
        /// <summary>
        /// 下载开始时间 采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string startTime { get; set; }
        /// <summary>
        /// 下载进度更新时间 采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string updateTime { get; set; }
        /// <summary>
        /// 下载结束时间 采用ISO8601时间格式，最大长度32个字符，如2018-09-03T17:30:08.000+08:00
        /// </summary>
        public string endTime { get; set; }
        /// <summary>
        /// 下载剩余时间，单位：秒
        /// </summary>
        public int leftTime { get; set; }
        /// <summary>
        /// 下载错误码，参考附录E.2.3 出入控制权限错误码
        /// https://open.hikvision.com/docs/5a6616f2134e43d1ba338309a8df2387?curNodeId=5a6616f2134e43d1ba338309a8df2387#c3be41a7
        /// </summary>
        public string errorCode { get; set; }
        /// <summary>
        /// 下载结果（当下载结束时有值，0:成功,1:失败，2：部分失败）
        /// </summary>
        public int downloadResult { get; set; }
        /// <summary>
        /// 下载用时，单位：秒
        /// </summary>
        public int consumeTime { get; set; }
        /// <summary>
        /// 下载状态
        /// </summary>
        public string downloadStatus { get; set; }
        /// <summary>
        /// 是否下载结束
        /// </summary>
        public bool isDownloadFinished { get; set; }
        /// <summary>
        /// 下载百分比
        /// </summary>
        public int downloadPercent { get; set; }
        /// <summary>
        /// 下载总人数
        /// </summary>
        public int totalPersonCount { get; set; }
        /// <summary>
        /// 已下发人员数量
        /// </summary>
        public int downloadPersonCount { get; set; }
        /// <summary>
        /// 下载成功人员数量
        /// </summary>
        public int successedPersonCount { get; set; }
        /// <summary>
        /// 下载失败人员数量
        /// </summary>
        public int failedPersonCount { get; set; }
    }
}
